package main

func main() {

}

type ListNode struct {
	Val  int
	Next *ListNode
}

//迭代方法  pre和curr一直往后移，移到不能移动为止
//func reverseList(head *ListNode) *ListNode {
//	var pre *ListNode
//	curr:=head
//	for curr!=nil{
//		next:=curr.Next
//		curr.Next=pre
//		pre=curr
//		curr=next
//	}
//	return pre
//}

//递归方法
func reverseList(head *ListNode) *ListNode {
	if head == nil || head.Next == nil {
		return head
	}
	node := reverseList(head.Next)
	head.Next.Next = head
	head.Next = nil
	return node
}
